PortWebは検索フォームを生成しません。 その代わりに、検索要求を自由なHTML書式で作成することができます。 これにより、PortWebは既存のウェブサイトとシームレスに統合できるようになります。
作成する検索フォームは、必要に応じて単純にすることも複雑にすることもできます。 「quickfind」、「query」の2つの異なるコマンドは、単純な検索クエリーと複雑な検索クエリーの両方に使われます。
quickfindコマンドは、基本的なキーワード検索を行うために簡略化された検索方法です。 このコマンドは、指定されたテキストを使って「〜で始まる」検索を実行します。 次の表は、設定できるパラメータを示したものです。
quickfindコマンド |
|
パラメータ |
説明 |
quickfind |
これは、コマンドの名前と同じですが、検索するキーワードを渡すためのパラメータでもあります。 |
catalog |
使用されるカタログのエイリアスを指定します。 エイリアスは、ディスク上のカタログまたはPortfolio Serverで公開しているカタログに、設定ファイルを使って割り当てられます |
template(オプション) |
応答用ページで使われるHTMLの書き出しテンプレートの名前を指定します。 このパラメータが渡されないと、デフォルトのHTMLの書き出しテンプレート(4×4のグリッドによる基本的なサムネール表示レイアウト)が使われます。 |
sorton(オプション) |
見つかったセットを並べ替える際の基準とするフィールドを指定します。 このフィールドは、単一の値を持つインデックスフィールドでなければなりません。 ここでフィールドを指定しない場合、レコードセットの順番は検索によって返される順番になります。 |
ascending(オプション) |
レコードセットを並べ替える順番を指定します。 値0は昇順を示し、値1は降順を示します。 sortonパラメータが指定されていない場合、このパラメータは無視されます。 sortonパラメータは指定されていても、このパラメータが指定されていない場合、デフォルトの並べ替え順は0(昇順)です。 |
offset(オプション) |
すでに表示されている収集したレコードの数を示す正の整数です。 このパラメータが指定されていないと、収集した最初のレコードから表示が開始されます。 |
例:
次に示す単純検索は、PortWebの設定ファイルで「Sample」というエイリアスを付けられたカタログで「com」で始まるキーワードを含むレコードを検索します。 「computer」や「communications」などのキーワードを含むレコードが返されます。
<A HREF="/scripts/PortWeb.dll?quickfind=com&catalog=Sample">...</A> |
次の例は基本的には同じ検索ですが、検索するキーワードをユーザーが入力できるフォームが使われます。 ここでは、使用しているオプションのパラメータもすべて表示しています。
<FORM ACTION="/scripts/PortWeb.dll?QuickFind" METHOD=POST> <INPUT NAME="quickfind" TYPE="Text" VALUE=""> <INPUT NAME="template" TYPE="HIDDEN" VALUE="Simple"> <INPUT NAME="sorton" TYPE="HIDDEN" VALUE="Filename"> <INPUT NAME="ascending" TYPE="HIDDEN" VALUE="1"> <INPUT NAME="offset" TYPE="HIDDEN" VALUE="10"> <INPUT NAME="catalog" TYPE="HIDDEN" VALUE="Sample"> <INPUT TYPE="submit"> </FORM> |
query要求はPortWebの中心となる機能です。 このコマンドを使うと、指定したPortfolioカタログで検索が実行され、指定したレイアウトで結果が返されるようになります。 次の表は、渡すことができる値を示したものです。
queryコマンド |
|
パラメータ |
説明 |
query |
これは検索を定義するパラメータのセットです。 |
catalog |
使用されるカタログのエイリアスを指定します。 エイリアスは、ディスク上のカタログまたはPortfolio Serverで公開しているカタログに、設定ファイルを使って割り当てられます。 |
template(オプション) |
応答用ページで使われるHTMLの書き出しテンプレートの名前を指定します。 このパラメータが渡されないと、デフォルトのHTMLの書き出しテンプレート(4×4のグリッドによる基本的なサムネール表示レイアウト)が使われます。 |
sorton(オプション) |
見つかったセットを並べ替える際の基準とする、単一の値を持つインデックスフィールドを指定します。 ここでフィールドを指定しない場合、レコードセットの順番は検索によって返される順番になります。 |
ascending(オプション) |
レコードセットを並べ替える順番を指定します。 値0は昇順を示し、値1は降順を示します。 sortonパラメータが指定されていない場合、このパラメータは無視されます。 sortonパラメータは指定されていても、このパラメータが指定されていない場合、デフォルトの並べ替え順は0(昇順)です。 |
offset(オプション) |
すでに表示されている収集したレコードの数を示す正の整数です。 このパラメータが指定されていないと、収集した最初のレコードから表示が開始されます。 |
queryパラメータ
このパラメータは、Portfolioで実行される検索を定義した変数のセットです。 クエリーの各句は、field、operator、valueという 3つの変数で定義されます。 2番目以降の各句は、join変数(「and」または「or」)を使って前の句と結合する必要があります。
次の表は、各変数の指定できる値を示したものです。
queryパラメータ |
|
変数 |
指定できる値 |
field |
指定されたデータベースの任意のインデックスフィールド。 非インデックスフィールドが指定された場合、クエリーは失敗します。 |
op |
使用できる演算子は以下のとおりです。
|
value |
数値フィールドでのみ使用できます。 |
join(オプション) |
この変数は、クエリーに複数の句が含まれる場合だけ使用され、「and」または「or」の値を指定できます。 このパラメータを指定しない場合「and」が使われます。 |
PortWebではPortfolioクライアントでサポートされるすべての演算子を使うことができますが、すべての演算子が各フィールドで機能するわけではありません。 選択したフィールドで演算子が機能しない場合、検索句は省略されます。 特定のフィールドでサポートされているかどうかが不明な演算子がある場合、Portfolioクライアントの検索機能を使って確認できます。 Portfolioクライアントの検索ダイアログボックスでフィールド名を選択し、演算子のプルダウンメニューを使って、そのフィールド名でサポートされている演算子を調べてください。
queryは、プラグインにより以下の基準に従って検証されます。
3つの変数すべてが各句に含まれている必要があります。
2番目以降のすべての句ではjoin変数も指定する必要があります(値は「and」または「or」)。
各field変数とoperator変数は上記の規則を満たす必要があります。
特定の句に対するこれらの検証が1つでも失敗すると、その句は省略されます。 queryのすべての句で検証が失敗した場合、プラグインは「クエリーに一致するレコードは見つかりません」というページを返します。 検証が成功すると、残りのパラメータが評価されます。
queryは最高10個の句を含むことができます。
例:
次の例は、2つの句を持つqueryコマンドを示したものです (コメントは説明のためだけに表示されています)。 サイトの目的に応じて、さまざまなパラメータを表示または非表示にすることができます。 この例では、最初の句のvalueフィールドはユーザーによって入力されますが、その他すべての値は非表示になっています。
<FORM ACTION="/scripts/PortWeb.dll?query" METHOD=POST> <INPUT NAME="template" TYPE="HIDDEN" VALUE="Simple"> <INPUT NAME="catalog" TYPE="HIDDEN" VALUE="Sample"> <!-- 1つ目の句(ユーザー入力あり) --> <INPUT NAME="field" TYPE="HIDDEN" VALUE="Keywords"> <INPUT NAME="op" TYPE="HIDDEN" VALUE="matches"> <INPUT NAME="value" TYPE="TEXT" VALUE=""> <!-- 2つ目の句(ユーザー入力なし) --> --> <INPUT NAME="join" TYPE="HIDDEN" VALUE="and"> <INPUT NAME="field" TYPE="HIDDEN" VALUE="Extension Win"> <INPUT NAME="op" TYPE="HIDDEN" VALUE="matches"> <INPUT NAME="value" TYPE="HIDDEN" VALUE="jpg"> <INPUT TYPE="Submit"> </FORM> |